// This is the command sequence that rotates the ST7789 driver coordinate frame

writecommand(TFT_MADCTL);
rotation = m % 4;
switch (rotation) {
    case 0:  // Portrait
#ifdef CGRAM_OFFSET
        if (_init_width == 135) {
            colstart = 52;
            rowstart = 40;
        } else {
            colstart = 0;
            rowstart = 0;
        }
#endif
        writedata(TFT_MAD_COLOR_ORDER);

        _width  = _init_width;
        _height = _init_height;
        break;

    case 1:  // Landscape (Portrait + 90)
#ifdef CGRAM_OFFSET
        if (_init_width == 135) {
            colstart = 40;
            rowstart = 53;
        } else {
            colstart = 0;
            rowstart = 0;
        }
#endif
        writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_COLOR_ORDER);

        _width  = _init_height;
        _height = _init_width;
        break;

    case 2:  // Inverter portrait
#ifdef CGRAM_OFFSET
        if (_init_width == 135) {
            colstart = 53;
            rowstart = 40;
        } else {
            colstart = 0;
            rowstart = 80;
        }
#endif
        writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_COLOR_ORDER);

        _width  = _init_width;
        _height = _init_height;
        break;
    case 3:  // Inverted landscape
#ifdef CGRAM_OFFSET
        if (_init_width == 135) {
            colstart = 40;
            rowstart = 52;
        } else {
            colstart = 80;
            rowstart = 0;
        }
#endif
        writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_COLOR_ORDER);

        _width  = _init_height;
        _height = _init_width;
        break;
}
